function splitDown(ary: string[], lineType: any) {
  return ary.map((str) => {
    const s = str.split("_")
    return [
      Number(s[0]),
      Number(s[1]),
      1,
      lineType
    ]
  })
}

/**
 * 过滤两个坐标数组中，连续相同3个以上就删除，将前段数组改为新路径数组，后面继续重复前面判断
 * @param A 标准路径，以这个为准，有相同就将B的删除
 * @param B 做处理的数组
 * @param lineType 数组的数据类型
 * @returns 处理后的二维数组
 */
export function extractUniqueArrays(A: any[], B: any[], lineType: any): any[][] {
  const arrayA = A.map((m) => `${Number(m.latitude)}_${Number(m.longitude)}`)
  const arrayB = B.map((m) => `${Number(m.latitude)}_${Number(m.longitude)}`)
  const result = []
  let xiangtong = []
  let diff = []
  let count = 0

  for (let i = 0; i < arrayB.length; i++) {
    const currentValue = arrayB[i]

    if (arrayA.includes(currentValue)) {
      xiangtong.push(currentValue)
      count++
    } else {
      diff.push(currentValue)
      // 如果超过3个相同，则不加入结果
      if (count > 3) {
        // 如果之前的元素连续超过3次，将之前的数组加入结果
        // result.push(currentArray);
        xiangtong = []
      } else {
        // 否则，将之前的数组中的元素加入新的数组
        if (xiangtong.length > 0) {
          diff = [...xiangtong, ...diff]
          result.push(splitDown(diff, lineType))
          diff = []
          xiangtong = []
        }
      }
      count = 1
    }

    // 将当前值加入当前数组
  }

  if (diff.length > 0) {
    result.push(splitDown(diff, lineType))
  }

  return result
}

/**
 * 不好用
 * 当A为二维数组时，如果进行上面判断，会出现A1，A2都可能出现重叠线路
 */
export function DiffArys(A: any[][], B: any[], lineType: any) {
  const result = A.map((m) => {
    return extractUniqueArrays(m, B, lineType)
  })

  const f = result.filter(f => f.length > 1)
  const c = result.filter(f => f.length === 1)
  if (f.length > 0) {
    // 取第一个
    return f[0]
  } else {
    return c[0]
  }
}